// cpp/calculator_napi.cpp
#include "napi/native_api.h"
#include "calculator.h"

// 注册NAPI模块
static napi_value Init(napi_env env, napi_value exports) {
    // 1. 定义构造函数的属性（如类名、原型方法）
    napi_property_descriptor desc[] = {
        // 静态方法：挂在构造函数上（如Calculator.max()）
        {"max", nullptr, Calculator::Max, nullptr, nullptr, nullptr, napi_default, nullptr},
        {"add", nullptr, Calculator::Add, nullptr, nullptr, nullptr, napi_default, nullptr},
        {"multiply", nullptr, Calculator::Multiply, nullptr, nullptr, nullptr, napi_default, nullptr}
    };

    napi_value avro = nullptr;
    napi_status status;
    napi_ref *ref = new napi_ref;
    const char *classBindName = "Calculator";
    status = napi_define_class(env, classBindName, NAPI_AUTO_LENGTH, Calculator::Construct, nullptr, sizeof(desc) / sizeof(desc[0]), desc, &avro);
    
    status = napi_create_reference(env, avro, 1, ref);
    
    status = napi_set_named_property(env, exports, classBindName, avro);

    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
    return exports;
}

NAPI_MODULE(calculatorModule, Init)
